home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 12: Textmags & Docs / nf_archive_12.iso / MAGS / SOURCES / ATARI_SRC.ZIP / atari source / DSMODS / STUFFPTR.S < prev    next >
Encoding:
Text File  |  2001-02-10  |  2.2 KB  |  134 lines

  1. *    Assembly language module to handle low level screen operations
  2. *
  3. *
  4.     .globl    _stuffpt
  5.     .globl  _lineai
  6.     .globl  _lineav
  7.     .globl    _setvdi
  8.     .globl  _fixvdi
  9.     .globl  _f_move
  10.     .globl  _r_move
  11.     .globl    _Lf_move
  12.  
  13. *
  14. _stuffpt:
  15.     move.l    4(sp),a0
  16.     move.l    8(sp),a1
  17.     move.l     (a0),(a1)
  18.     rts
  19.  
  20. *
  21. *    Line A init code 
  22. *
  23. *
  24. _lineai:
  25.     dc.w    $a000            * Init lineA
  26.     move.l    a0,_lineav
  27.     rts
  28. *
  29. *   Set up vdi variables for making image mask
  30. *
  31. *        4(sp)    - width of new screen
  32. *        6(sp)    - height of new screen
  33. *        8(sp)   - width of screen in bytes
  34. _setvdi:
  35.     move.l    _lineav,a0
  36.     lea    save_vars,a1
  37.     move.w    -780(a0),(a1)+
  38.     move.w    -774(a0),(a1)+
  39.     move.w    -772(a0),(a1)+
  40.     move.w    -692(a0),(a1)+
  41.     move.w    -690(a0),(a1)+
  42.     move.w    -666(a0),(a1)+
  43.     move.w    -622(a0),(a1)+
  44.     move.w    -614(a0),(a1)+
  45.     move.w     -12(a0),(a1)+
  46.     move.w      -4(a0),(a1)+
  47.     move.w      -2(a0),(a1)+
  48.     move.w        (a0),(a1)+
  49.     move.w       2(a0),(a1)
  50. *
  51.     move.w    #1,-780(a0)
  52.     move.w    #1,-774(a0)
  53.     move.w    #0,-772(a0)
  54.     move.w    4(sp),-692(a0)
  55.     sub.w    #1,-692(a0)
  56.     move.w    6(sp),-690(a0)
  57.     sub.w    #1,-690(a0)
  58.     move.w    #2,-666(a0)
  59.     move.w    #0,-622(a0)
  60.     move.w    #0,-614(a0)
  61.     move.w     4(sp),-12(a0)
  62.     move.w     6(sp),-4(a0)
  63.     move.w     8(sp),-2(a0)
  64.     move.w     #1,(a0)
  65.     move.w     8(sp),2(a0)
  66.         rts
  67. *
  68. _fixvdi:
  69.     move.l    _lineav,a0
  70.     lea    save_vars,a1
  71.     move.w    (a1)+,-780(a0)
  72.     move.w    (a1)+,-774(a0)
  73.     move.w    (a1)+,-772(a0)
  74.     move.w    (a1)+,-692(a0)
  75.     move.w    (a1)+,-690(a0)
  76.     move.w    (a1)+,-666(a0)
  77.     move.w    (a1)+,-622(a0)
  78.     move.w    (a1)+,-614(a0)
  79.     move.w    (a1)+,-12(a0)
  80.     move.w    (a1)+,-4(a0)
  81.     move.w    (a1)+,-2(a0)
  82.     move.w    (a1)+,(a0)
  83.     move.w    (a1)+,2(a0)
  84.     rts
  85. *
  86. *
  87. _f_move:
  88.     move.l    4(a7),a0
  89.     move.l    8(a7),a1
  90.     move.w    12(a7),d0
  91.     subq.w    #1,d0
  92.     bmi    f_mvexit
  93. f_mvlp:
  94.     move.b    (a0)+,(a1)+
  95.     dbra    d0,f_mvlp
  96. f_mvexit:
  97.     rts
  98. *
  99. *
  100. _r_move:
  101.     move.l    4(a7),a0
  102.     move.l    8(a7),a1
  103.     move.w    12(a7),d0
  104.     subq.w    #1,d0
  105.     bmi    r_mvexit
  106.     adda.l    #1,a0
  107.     adda.l    #1,a1
  108. r_mvlp:
  109.     move.b    -(a0),-(a1)
  110.     dbra    d0,r_mvlp
  111. r_mvexit:
  112.     rts
  113.  
  114.  
  115. *
  116. _Lf_move:
  117.     movea.l    $4(a7),a0    * Source
  118.     movea.l    $8(a7),a1    * Destination
  119.     move.l    $C(a7),d0    * count
  120.  
  121. lf_next:
  122.     tst.l    d0
  123.     beq.b    lf_exit
  124.     move.b    (a0)+,(a1)+
  125.     subq.l    #1,d0
  126.     bra.b    lf_next
  127. lf_exit:
  128.     rts
  129.  
  130. *
  131. .bss
  132. save_vars:    .ds.w    14
  133. .end
  134.